.. _cmlStReadMioStatuses: cmlStReadMioStatuses ================================ -------------------------------- SYNOPSYS ````````````` .. code-block:: none VT_I4 cmlStReadMioStatuses ([in] VT_I4 BoardId, [in] VT_I4 Channel, [out] VT_PI4 MioStates) DESCRIPTION ````````````` - 이 함수는 현재 서보와 관련된 여러가지 MIO 상태를 반환합니다. 각 비트별로 할당된 MIO 의 상태를 표시하므로 사용자는 비트마스크를 수행하여 원하는 I/O 의 상태를 확인(確認)하여야 합니다. 범용적인 모션 응용프로그램에서는 MIO(Machine I/O) 상태를 표현하기 위한 용도로 본 함수의 사용 빈도가 매우 높습니다. \ - 이 함수의 사용과 호출에 있어, 제공된 ㈜커미조아의 함수 헤더 Visual Basic 에서는 함수의 첨두어 cml 가 붙지 않습니다. PARAMETER ````````````` ▶ BoardId: 사용자가 설정한 디바이스(보드) ID. ▶ Channel : 사용자가 제어하고자 하는 축(채널) 번호 ▶ MioStates : Machine I/O 상태로 구조체(TMechnicalIO)로 되어 있습니다. 각 상태값의 비트 수와 의미는 아래와 같습니다. .. csv-table:: :widths: 10 10 80 :header-rows: 1 :stub-columns: 0 Name, Bit 수, Meaning INP, 1, In-Position 상태(1=ON) Reserved_00, 1, 예약 공간 #0 HC, 1, 원점 복귀 완료 상태(1=완료) TL, 1, Torque limite status(1=토크값이 제한치가 되었음) WARNING, 1, 서보(AMP)의 경고상태(1=ON) ALARM, 1, 서보(AMP)의 알람상태(1=ON) SVRDY, 1, 서보(AMP)의 Servo On 준비 상태(1=ON) SVON, 1, Servo On 상태(1=ON) ELN, 1, -EL 센서 신호 상태(1=ON) ELP, 1, +EL 센서 신호 상태(1=ON) ORG, 1, 원점 센서 신호 상태(1=ON) EX_IN1, 1, 외부 입력 활성상태(1=ON) EX_IN2, 1, 외부 입력 활성상태(1=ON) EX_IN3, 1, 외부 입력 활성상태(1=ON) EX_IN4, 1, 외부 입력 활성상태(1=ON) EMG_STP, 1, 외부 입력 신호의 안전에 대한 활성상태(1=ON) Reserved_01, 4, 예약 공간 #1 Reserved_02, 12, 예약 공간 #2 ZSPD, 1, Zero Speed(1=정지 상태) DEN, 1, 위치 결정 완료 상태(1=ON) ZPOINT, 1, Z상 검출위치 통과 상태 RETURN VALUE ````````````` +------------+-----------+ | Value | Meaning | +============+===========+ | 음수 | 수행 실패 | +------------+-----------+ | ERR_NONE | 수행 성공 | +------------+-----------+ EXAMPLE ``````````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ // BoardID는 0으로 선언되었다고 가정함 long dwMioState = 0; cmlStReadMioStatuses(BoardID, 0, &dwMioState); // dwMioState 의 값을 오른쪽으로 쉬프트 연산(Shift Operation) 하여, 해당 상태 값을 얻습니다. BOOL RDY_State = (dwMioState >> cmIOST_RDY) & 0x1; BOOL ALM_State = (dwMioState >> cmIOST_ALM) & 0x1; BOOL ELP_State = (dwMioState >> cmIOST_ELP) & 0x1; BOOL ELN_State = (dwMioState >> cmIOST_ELN) & 0x1; ……… ……… .. code-block:: c++ :linenos: Delphi //BoardID는 0으로 선언되었다고 가정함 Var dwMioState : LongInt; RDY_State : Boolean; ALM_State : Boolean; ELP_State : Boolean; ELN_State : Boolean; begin cmlStReadMioStatuses(BoardID, 3,@dwMioState); // dwMioState 의 값을 오른쪽으로 쉬프트 연산(Shift Operation) 하여, 해당 상태 값을 얻습니다. RDY_State := Boolean((dwMioState shr cmIOST_RDY) and $1); ALM_State := Boolean((dwMioState shr cmIOST_ALM) and $1); ELP_State := Boolean((dwMioState shr cmIOST_ELP) and $1); ELN_State := Boolean((dwMioState shr cmIOST_ELN) and $1); ……… ……… end;